home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok20.lha / ComplexLib / txt / FFPMathLibExt.mod < prev    next >
Text File  |  1993-08-15  |  2KB  |  85 lines

  1.  
  2.  
  3. (*********************************************************************
  4.  
  5.     :Program.       FFPMathLibExt.mod
  6.     :Author.        Gary Struhlik  
  7.     :Address.    -
  8.     :Phone.      -
  9.     :shortcut.      [gs]
  10.     :Version.       1.0   
  11.     :Date.          06.10.1988
  12.     :Copyright.  PD
  13.     :Language.      Modula-II
  14.     :Translator. M2Amiga
  15.     :Imports.     -
  16.     :UpDate.     -
  17.     :Contents.     Zusätzliche mathematische Funktionen
  18.     :Remark.     Für den Amiga Modula-2 Klub / Stuttgart
  19.     :Remark.     Am 01.01.1989 mit M2Amiga 3.2d neu kompiliert
  20.  
  21. **********************************************************************)
  22.  
  23. IMPLEMENTATION MODULE FFPMathLibExt; (* für Datentyp FFP *)
  24.  
  25. FROM MathTrans IMPORT Sin,Cos,Log,Exp,Sqrt,Atan;
  26. FROM SYSTEM IMPORT FFP;
  27.  
  28. PROCEDURE Round ( x : FFP ) : LONGINT;
  29. BEGIN
  30.    IF    x >= 0.0 THEN RETURN TRUNC( x + 0.5 )
  31.    ELSE  RETURN TRUNC( x - 0.5 )
  32.    END (* IF *)
  33. END Round;        
  34.  
  35. PROCEDURE Sqr ( x : FFP ) : FFP;
  36. BEGIN
  37.    RETURN x*x
  38. END Sqr;       
  39.  
  40. PROCEDURE Arsinh ( x : FFP ) : FFP;
  41. BEGIN
  42.    RETURN Log( x + Sqrt( x*x + 1.0))
  43. END Arsinh;
  44.  
  45. PROCEDURE Arcosh ( x : FFP ) : FFP;
  46. BEGIN
  47.    IF (x > 1.0) THEN RETURN Log( x + Sqrt( x*x - 1.0))  (* für x # 1.0  *)
  48.     ELSIF x=1.0 THEN RETURN 0.0
  49.    END (* IF *)
  50. END Arcosh;
  51.  
  52. PROCEDURE Artanh ( x : FFP ) : FFP;
  53. BEGIN
  54.    RETURN 0.5*Log( (1.0+x)/(1.0-x) )  (* für x # 1.0   *)
  55. END Artanh;
  56.                                          
  57. PROCEDURE Fact ( x : FFP ) : FFP; (*  Fakultät  *)
  58. VAR
  59.     i : INTEGER;
  60.         fac : FFP;
  61. BEGIN
  62.    fac:=1.0;
  63.    IF (x = 1.0) OR (x = 0.0) THEN
  64.       RETURN 1.0
  65.     ELSIF x < 0.0 THEN
  66.       RETURN 1.0E-38
  67.     ELSE
  68.       FOR i:=2 TO TRUNC(x) DO
  69.           fac:=fac+fac*( FFP(i)-1.0 )   
  70.       END; (* FOR *)
  71.       RETURN fac
  72.    END
  73. END Fact;
  74.  
  75. PROCEDURE Sgn ( x : FFP ) : FFP;  (*   Vorzeichen -1.0, 0.0 oder +1.0  *)
  76. BEGIN
  77.    IF x = 0.0 THEN
  78.       RETURN 0.0
  79.    ELSE
  80.       RETURN x/ABS(x)
  81.    END (* IF *)
  82. END Sgn;
  83.  
  84. END FFPMathLibExt.
  85.